﻿using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using System.Text.RegularExpressions;
using WebsiteUI.Extensions;
using com.subb.WebFramework;

namespace WebsiteUI.Models
{
    public class RegisterModel
    {
        public string UserName { get; set; }
        public string Password { get; set; }
        public string Password2 { get; set; }
        public string NickName { get; set; }
        public string Email { get; set; }

        public bool VerifyModel(out string msg)
        {
            msg = string.Empty;
            EmailUtils eu = new EmailUtils();
            FW_MemberDAL mdal = new FW_MemberDAL();
            //检查用户名
            //if (string.IsNullOrWhiteSpace(UserName))
            //{
            //    msg = "请输入用户名";
            //    return false;
            //}
            //else if (UserName.Length > 15)
            //{
            //    msg = "用户名长度不能超过15个字符";
            //    return false;
            //}
            //else if (UserName.Length < 3)
            //{
            //    msg = "用户名长度不能小于3个字符";
            //    return false;
            //}
            //else if (Regex.IsMatch(UserName, @"^\d.*$"))
            //{
            //    msg = "用户名不能以数字开头";
            //    return false;
            //}
            //else if (!Regex.IsMatch(UserName, @"^\w+$"))
            //{
            //    msg = "用户名只能包含下划线，英文字母，数字";
            //    return false;
            //}
            //else if (!Regex.IsMatch(UserName, @"^([a-z]|[A-Z])[0-9a-zA-Z_]+$"))
            //{
            //    msg = "用户名只能英文字母开头";
            //    return false;
            //}
            //else if (!Regex.IsMatch(UserName, @"[0-9a-zA-Z]+$"))
            //{
            //    msg = "用户名只能英文字母或数字结尾";
            //    return false;
            //}
            //else
            //{
            //    //检查用户名是否已注册
            //    if (mdal.HasExistMemberID(UserName))
            //    {
            //        msg = "用户名已存在";
            //        return false;
            //    }
            //}

            //检查电子邮箱地址
            if (string.IsNullOrWhiteSpace(UserName))
            {
                msg = "请输入电子邮箱地址";
                return false;
            }
            else if (!eu.CheckEmailFormat(UserName))
            {
                msg = "电子邮箱地址不正确";
                return false;
            }
            else if (mdal.HasExistMemberID(UserName))
            {
                msg = "电子邮件地址已被注册";
                return false;
            }

            //检查密码
            if (string.IsNullOrWhiteSpace(Password))
            {
                msg = "请输入密码";
                return false;
            }
            else if (Password.Length > 15)
            {
                msg = "密码长度不能超过15位";
                return false;
            }
            else if (Password.Length < 3)
            {
                msg = "密码长度不能小于3位";
                return false;
            }
            else if (string.IsNullOrWhiteSpace(Password2))
            {
                msg = "请输入确认密码";
                return false;
            }
            else if (!Password.Equals(Password2, StringComparison.CurrentCulture))
            {
                msg = "两次输入的密码不一致";
                return false;
            }

            //检查昵称
            if (string.IsNullOrWhiteSpace(NickName))
            {
                msg = "请输入昵称";
                return false;
            }
            else if (NickName.Length < 2)
            {
                msg = "请输入2个字符以上的昵称";
                return false;
            }
            else if (Regex.IsMatch(NickName, "^[0-9]+$"))
            {
                msg = "昵称不能全是数字";
                return false;
            }
            else if (!Regex.IsMatch(NickName, "^[a-zA-Z0-9\u4e00-\u9fa5_-]+$"))
            {
                msg = "仅支持中英文、数字、\"_\"和减号";
                return false;
            }
            else if (mdal.HasExistNickName(NickName))
            {
                msg = "该昵称已被使用，请重新输入";
                return false;
            }

            return true;
        }
    }
}